package com.rtf.framework.es.config;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @Author: lichong
 * @Description: 缓存配置信息
 * @Date: 2021/2/1 17:03
 * @Version: 1.0
 */
@Getter
@Setter
public class AppEsHystrixProperties {

    /**
     * 线程池核心大小
     */
    private Integer coreSize = 50;

    /**
     * 线程长活时间单位分钟
     */
    private Integer keepAliveTimeMinutes = 1;

    /**
     * 线程池队列大小
     */
    private Integer maxQueueSize = 1000;

    /**
     * hystrix 定义线程池时一个手动设置的“最大”大小，即使未达到maxQueueSize ，也会发生拒绝。
     * 这样做是因为 BlockingQueue的 maxQueueSize不能动态更改，这里希望支持动态更改影响拒绝的队列大小
     */
    private Integer queueSizeRejectionThreshold = 800;

    /**
     * 执行超时时间，单位毫秒
     */
    private Integer ExecutionTimeoutInMilliseconds = 20000;

    /**
     * 熔断恢复时长，这里是默认5s
     */
    private Integer circuitBreakerSleepWindowInMilliseconds = 5000;

    /**
     * 在一个rolling window内的所有请求里,发生问题的请求占所有请求的百分比阈值, 50%也是默认值
     */
    private Integer circuitBreakerErrorThresholdPercentage = 50;

    /**
     * 指定rolling window内请求的个数设定的阈值，如果大于该值则有可能出发熔断。
     *  只有当百分比阈值和错误个数阈值都超过时才触发熔断。
     */
    private Integer circuitBreakerRequestVolumeThreshold = 5;
}
